#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main() {
  // 利用fopen()以写的形式打开一个文件
  // FILE* fp = fopen("log.txt","w");
  // 当文件名不带路径时指的是当前路径
  /*什么是当前路径?*/

  /* 当前路径指的是当前进程的工作路径
   * 可以在/proc/1当中的cwd中查看对应的工作路径
   *cwd 指的是进程的当前工作路径
   */

  // if(!fp){
  //   perror("fopen");
  //   return 1;
  // }
  // fclose(fp);

  //-----------------

  // 验证当前路径指的是进程的工作路径
    chdir("./../../../..");
    FILE* fp = fopen("log.txt","w");
    if(!fp){
      perror("fopen");
      return 1;
    }
    pid_t id = getpid();
    printf("%d\n",id);
    sleep(1000);
    fclose(fp);
  //
  //

  //-----------------

  //  char* message = "Hello Linux";
  //
  //  FILE* fp = fopen("log.txt","w");
  //  if(!fp){
  //    perror("fopen");
  //    return 1;
  //  }
  //  //在传参的过程当中strlen()不需要+1 主要的原因是本就不需要包括'\0'
  //  // 对于c语言来说
  //  需要添加'\0'作为字符串的结尾是因为c语言无法很好的在内存当中标定一个字符串的结束
  //  // 而对于操作系统而言 操作系统本身是可以判断一个字符串的结束
  //  故在OS当中或者是在使用对应的接口时不需要使用'\0'作为字符串的结束标志
  //  fwrite(message,strlen(message),1,fp);
  //  fclose(fp);
  // 以写的形式读取文件的情况下将会清空文件
  // 即若是文件不存在则创建文件 若是文件存在则清空该文件

  //-----------------

  //  FILE* fp = fopen("log.txt","w");
  //  if(!fp){
  //    perror("fopen");
  //    return 1;
  //  }
  //  fclose(fp);
  //
  // 验证以w形式打开文件将会清空文件

  //-----------------

  //   FILE* fp = fopen("log.txt","a");
  //   //以a的形式打开则为追加
  //   char* message = "xxx";
  //   if(!fp){
  //     perror("fopen");
  //     return 1;
  //   }
  //   fwrite(message,strlen(message),1,fp);
  //   fclose(fp);
  //  //而实际上对于重定向而言分为> 与>>即为打开方式不同
  //  //>的打开方式为以只读形式打开 >>的打开方式为以追加的方式打开

  //-----------------

  // FILE* fp = fopen("log.txt", "a");
  // // 以a的形式打开则为追加
  // char* message = "xxx";
  // if (!fp) {
  //   perror("fopen");
  //   return 1;
  // }
  // fprintf(fp, "%s:%d\n", message, 1234);
  // fprintf(stderr, "%s:%d\n", message, 1234);
  // fprintf(stdout, "%s:%d\n", message, 1234);
  // // 可以直接在输出流打开

  // fclose(fp);
  // // 而实际上对于重定向而言分为> 与>>即为打开方式不同
  // //>的打开方式为以只读形式打开 >>的打开方式为以追加的方式打开

  // //-----------------

  // FILE* fp = fopen("log.txt", "r");
  //                 //以读的形式打开 并且使用fscanf 再进行打印
  // char* message = "xxx";
  // if (!fp) {
  //   perror("fopen");
  //   return 1;
  // }
  // char out;
  // while(fscanf(fp,"%c",&out)!=EOF){
  //   printf("%c ", out);
  // }

  // fclose(fp);

  //-----------------

  // FILE* fp = fopen("log.txt", "r");
  // // 以读的形式打开 并且使用fscanf 再进行打印
  // char* message = "xxx";
  // if (!fp) {
  //   perror("fopen");
  //   return 1;
  // }
  // char out[1024];
  // out[1023] = '\0';
  // fread(out, sizeof(out), 1, fp);
  // printf("%s\nhello world\n", out);

  // fclose(fp);

  return 0;
}
